/**
 * 这是一个我们自己建立的校验框架。<p>
 * 它提供一个API和几个可扩展的SPI。<p>
 * 
 * <strong>API的介绍如下。</strong><p>
 * 
 * 框架入口是{@link ValidUtil#valid(IValidField...)}。<p>
 * 例如：
 * {@code IResult<String> validResult = ValidUtil.valid(new ValidField("123",
				"测试整数字段", STRING_IS_INT, STRING_NOT_BLANK);>
 * 
 * 
 * 入参{@link ValidField} 用于指定需要校验的字段。字段对象包括有字段的值、字段的名称，以及针对该字段的校验配置。<br>
 * 
 * 其中，校验配置{@link IValidRuleConfig}本身并不做校验；它主要起到两个作用：<br>
 * 指定实际的校验规则，以及传递校验所需的额外参数。<p>
 * 
 * 实际的校验规则是由{@link IValidRule}的实现类提供的。框架中，所有可用的校验规则都已注册在
 * {@link IValidFactory}中了。这些校验规则的校验配置则在{@link IValidRuleConfig}的诸多常量参数中。<p>
 * 
 * 关于使用方法，可以参见API的测试用例：
 * @see net.loyintean.pearlshell.validation.util.ValidFieldTest. 
 *
 * <strong>SPI的介绍如下。</strong><p>
 * 本框架提供的主要扩展点是{@link IValidRule}。<br>
 * 实现了自己的校验规则之后，可以直接调用；也可以利用
 * {@link IValidFactory#registRule(String, IValidRule)}方法将其注册到默认的工厂
 * {@link IValidFactory.SINGLETON_FACTORY}中。<br>
 * 然后就可以通过框架API来使用了。
 * 
 * 
 * <strong>版本记录</strong>
 * 
 * <ul>
 * 	<li> 20140702.1.0.0
 * 		<ul> 
 * 			<li>IValidField/IValidRule/IValidRuleConfig基础框架</li>
 * 			<li>OBJ_NOT_NULL/STRING_NOT_BLANK/</li>
 * 			<li>STRING_IS_INT/STRING_WITHOUT_CHINESE四个通用校验配置</li>
 * 		</ul>
 * 	</li>
 * </ul>
 * */
package net.loyintean.pearlshell.validation;

